ДЛЯ НОВИЧКОВНЕ ДЛЯ НОВИЧКОВНЕ ОБЯЗАТЕЛЬНОВ РАЗРАБОТКЕ
Разработчику
Архитектору
Инженеру
Чек-лист самопроверки
- Понимаете ли вы, чем десктопное приложение отличается от веб- и мобильного?
- Можете ли вы объяснить, что такое UI-поток и почему его нельзя блокировать?
- Знаете ли вы, как правильно выполнять длительные операции без «зависания» интерфейса?
- Умеете ли вы использовать
async/await или эквивалентные механизмы в вашем языке?
- Понимаете ли вы, как работает основной цикл обработки сообщений в десктопном приложении?
- Можете ли вы описать жизненный цикл окна: создание, отображение, закрытие?
- Знаете ли вы стандартные элементы управления: Label, TextBox, Button, ComboBox, ListBox, DataGrid?
- Умеете ли вы обрабатывать события: клик, ввод текста, изменение размера окна?
- Понимаете ли вы, что такое модальное и немодальное диалоговое окно?
- Можете ли вы реализовать всплывающее контекстное меню по правому клику?
- Знаете ли вы, как работают полосы прокрутки и когда они появляются?
- Умеете ли вы создавать многооконные или MDI-приложения?
- Понимаете ли вы различие между толстым и тонким клиентом?
- Можете ли вы спроектировать гибридное приложение с офлайн- и онлайн-режимами?
- Знаете ли вы, как организовать локальное хранилище данных (например, SQLite)?
- Умеете ли вы реализовать очередь синхронизации для отправки изменений на сервер?
- Понимаете ли вы, как разрешать конфликты при одновременном редактировании?
- Знаете ли вы, где хранить пользовательские данные в соответствии с рекомендациями ОС?
- Умеете ли вы работать с путями к файлам кроссплатформенно?
- Понимаете ли вы, как работает цифровая подпись кода и зачем она нужна?
- Знаете ли вы, какие лицензии используются в десктопной разработке (проприетарные, open-source)?
- Умеете ли вы соблюдать требования GDPR/ФЗ-152 при сборе персональных данных?
- Понимаете ли вы, как публиковать приложение в Microsoft Store или Mac App Store?
- Знаете ли вы различия между установщиками, пакетными менеджерами и универсальными форматами (Flatpak, Snap, AppImage)?
- Умеете ли вы реализовать автоматическое обновление приложения?
- Понимаете ли вы, как работает локализация и интернационализация?
- Умеете ли вы выносить строки в ресурсы и поддерживать несколько языков?
- Знаете ли вы, как адаптировать интерфейс под RTL-языки (арабский, иврит)?
- Понимаете ли вы принципы доступности (accessibility) и как их реализовать?
- Умеете ли вы обеспечить клавиатурную навигацию и поддержку скринридеров?
- Знаете ли вы, как масштабировать интерфейс под разные DPI и разрешения?
- Понимаете ли вы, как работает рендеринг графического интерфейса (layout, clipping, invalidation)?
- Умеете ли вы выбирать подходящий архитектурный паттерн (MVC, MVP, MVVM)?
- Знаете ли вы преимущества и недостатки MVVM по сравнению с MVP?
- Понимаете ли вы, как реализовать привязку данных (data binding) в вашем фреймворке?
- Умеете ли вы писать unit-тесты для ViewModel или Presenter’а?
- Знаете ли вы, как писать UI-тесты через accessibility-интерфейсы?
- Понимаете ли вы, как избежать утечек памяти при работе с событиями и привязками?
- Умеете ли вы безопасно хранить учётные данные (через Credential Manager, Keychain и т.п.)?
- Знаете ли вы, как защититься от DLL-инъекций или path traversal?
- Понимаете ли вы, как работает песочница (sandbox) в Flatpak/Snap/App Store?
- Умеете ли вы использовать системные хранилища вместо открытых файлов конфигурации?
- Знаете ли вы, как выбрать фреймворк под ваши задачи (.NET MAUI, Qt, Electron, Tauri)?
- Понимаете ли вы, какие накладные расходы несёт каждый из популярных решений?
- Умеете ли вы настроить CI/CD-конвейер для сборки под Windows, macOS и Linux?
- Знаете ли вы, как подписывать сборки в автоматическом режиме?
- Понимаете ли вы, как управлять версиями десктопного приложения (SemVer, changelog)?
- Умеете ли вы собирать анонимную телеметрику с согласия пользователя?
- Знаете ли вы, как реализовать отчёт об ошибках с отправкой стека вызовов?
- Понимаете ли вы, как обеспечить совместимость с будущими версиями ОС и зависимостей?